home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 095 / rbbscnv.arc / CNVDIR.ARC / CNVDIR.BAS next >
BASIC Source File  |  1986-11-10  |  4KB  |  146 lines

  1. DEFINT A-Z
  2.  
  3. GOSUB INITIALIZE
  4.  
  5. GOSUB CREDITS
  6.  
  7. GOSUB LOADCATS
  8.  
  9. GOSUB PROCESSCAT
  10.  
  11. GOSUB CLEANUP
  12.  
  13. END
  14.  
  15. INITIALIZE:
  16.   DIM CATEGORY.NAME$(99),CATEGORY.CODE$(99)
  17.   DIR.CAT$ = "DIR.CAT"
  18.   MASTER$ = "UPLOADS.FIX"
  19.   DIR.EXTENSION$ = "DIR"
  20.   CATEGORY.LEN = 3
  21.   LINES.TRUNCATED = 0
  22.   LINES.EXTENDED = 0
  23.   LINES.EXCLUDED = 0
  24.   TOT.LINES.OUT = 0
  25.   DESC.LEN = 40
  26.   IF LEN(COMMAND$) > 0 THEN _
  27.      DESC.LEN = VAL(COMMAND$)
  28.   LINE.LEN = 33 + DESC.LEN
  29. RETURN
  30.  
  31. CREDITS:
  32.  
  33.   LOCATE 2,7
  34.   PRINT "CNVDIR (c) 1986 Ken Goosens  An RBBS Conversion Utility"
  35.   LOCATE 3,1
  36.   PRINT "FORMAT:  CNVDIR <length>  where <length>=# chars to be in file description"
  37.   LOCATE 4,5
  38.   PRINT "This program converts directories for the Upload Management System"
  39.   LOCATE 6,7
  40.   PRINT "For all the directories listed in ";DIR.CAT$;" it "
  41.   LOCATE 8,10
  42.   PRINT "o  Screens out non-directory entries (e.g. headers)"
  43.   LOCATE 9,10
  44.   PRINT "o  Appends the directory entries to ";MASTER$
  45.   LOCATE 10,10
  46.   PRINT "o  Adds the category code specified in ";DIR.CAT$
  47.   LOCATE 11,10
  48.   PRINT "o  Makes the entries fixed length with a file decription of";STR$(DESC.LEN);" chars."
  49.   LOCATE 14,5
  50.   PRINT "On the current directory should be"
  51.   LOCATE 16,5
  52.   PRINT "   - the directories of files (extension ";DIR.EXTENSION$;")"
  53.   LOCATE 17,5
  54.   PRINT "   - the directory category file ";DIR.CAT$;" in format"
  55.   LOCATE 18,5
  56.   PRINT "       <directory name>,<dir codes>,<dir description>
  57.   LOCATE 20,5
  58.   PRINT "    After consolidation, sort the single directory by date."
  59.   LOCATE 22,20
  60.   INPUT "[A]bort, or [C]ontinue (A/C) ",X$
  61.   IF X$<>"C" AND X$<>"c" THEN END
  62. RETURN
  63.  
  64. LOADCATS:
  65.   CLS
  66.   LOCATE 5,8
  67.   PRINT "Searching ";DIR.CAT$;" for single code categories: found ";
  68.   COL = POS(0)
  69.   OPEN DIR.CAT$ FOR INPUT AS #1
  70.   NUM.CATS = 0
  71.   WHILE NOT EOF(1) AND NUM.CATS < UBOUND(CATEGORY.CODE$)
  72.      INPUT #1,CN$,CC$,X$
  73.        IF INSTR(CC$,",")=0 THEN _
  74.          NUM.CATS = NUM.CATS + 1:_
  75.          LOCATE 5,COL:_
  76.          PRINT NUM.CATS:_
  77.          CATEGORY.NAME$(NUM.CATS) = CN$:_
  78.          CATEGORY.CODE$(NUM.CATS) = CC$
  79.   WEND
  80.   CLOSE 1
  81. RETURN
  82.  
  83. PROCESSCAT:
  84.   OPEN MASTER$ FOR OUTPUT AS #2
  85.  
  86.   FOR I=1 TO NUM.CATS
  87.      OPEN CATEGORY.NAME$(I)+"."+DIR.EXTENSION$ FOR INPUT AS #1
  88.      LOCATE 10,25
  89.      PRINT "Processing ";CATEGORY.NAME$(I);
  90.      COL = POS(0) + 1
  91.      PRINT SPACE$(10);
  92.      CC$ = CATEGORY.CODE$(I)
  93.      GOSUB CCLENGTH
  94.      NUM.LINES = 0
  95.      LINES.OUT = 0
  96.      WHILE NOT EOF(1)
  97.        NUM.LINES = NUM.LINES + 1
  98.        LOCATE 10,COL
  99.        PRINT NUM.LINES
  100.        LINE INPUT #1,A$
  101.        IF LEN(A$) > 30 THEN_
  102.          IF MID$(A$,22,2)="  " AND MID$(A$,26,1)="-" _
  103.             AND MID$(A$,29,1)="-" THEN _
  104.         GOSUB LINELENGTH:_
  105.         LINES.OUT = LINES.OUT + 1:_
  106.                 PRINT #2,A$;CC$_
  107.          ELSE_
  108.             LINES.EXCLUDED = LINES.EXCLUDED + 1_
  109.        ELSE_
  110.          LINES.EXCLUDED = LINES.EXCLUDED + 1
  111.      WEND
  112.      TOT.LINES.OUT = TOT.LINES.OUT + LINES.OUT
  113.    CLOSE 1
  114.    NEXT
  115. RETURN
  116.  
  117. CLEANUP:
  118.   CLOSE
  119.   LOCATE 14,5
  120.   PRINT "# LINES:  truncated ";LINES.TRUNCATED;"  extended ";LINES.EXTENDED;
  121.   PRINT "  excluded ";LINES.EXCLUDED
  122.   LOCATE 16,7
  123.   PRINT "Your converted upload directory is file ";MASTER$
  124.   LOCATE 17,20
  125.   PRINT "It contains";STR$(TOT.LINES.OUT);" entries."
  126. RETURN
  127.  
  128. CCLENGTH:
  129.   L = LEN(CC$)
  130.   IF L > CATEGORY.LEN THEN _
  131.       PRINT "Category code ";CC$; "exceeds maximum length of ";CATEGORY.LEN:_
  132.       PRINT "Aborting...":_
  133.       END
  134.   CC$ = CC$ + SPACE$(CATEGORY.LEN - L)
  135. RETURN
  136.  
  137. LINELENGTH:
  138.   L = LEN(A$)
  139.   IF L > LINE.LEN THEN _
  140.      LINES.TRUNCATED = LINES.TRUNCATED + 1:_
  141.      A$ = LEFT$(A$,LINE.LEN)_
  142.   ELSE IF L < LINE.LEN THEN _
  143.      LINES.EXTENDED = LINES.EXTENDED + 1:_
  144.      A$ = A$ + SPACE$(LINE.LEN-L)
  145. RETURN
  146.